home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / util / cli / linkdir_source.lha / linkdir2.asm < prev   
Assembly Source File  |  1996-06-29  |  5KB  |  284 lines

  1. _execbase    equ    4
  2. openlib        equ    -552
  3. closelib    equ    -414
  4. allocmem    equ    -198
  5. freemem        equ    -210
  6.  
  7. lock        equ    -84
  8. unlock        equ    -90
  9. examine        equ    -102
  10. exnext        equ    -108
  11. open        equ    -30
  12. close        equ    -36
  13. read        equ    -42
  14. write        equ    -48
  15. delay        equ    -198
  16.  
  17.  
  18.     move.l    a0,caddress    ;save commandline
  19.     move.l    d0,clength
  20.     
  21.     movem.l    a0-a6/d0-d7,-(sp)
  22.  
  23.     move.l    _execbase,a6    ;open doslib
  24.     moveq    #0,d0
  25.     move.l    #dosname,a1
  26.     jsr    openlib(a6)
  27.     move.l    d0,dosbase
  28.     beq    end
  29.     
  30.     move.l    #200,d0        ;alloc mem for dirname
  31.     moveq    #0,d1
  32.     jsr    allocmem(a6)
  33.     move.l    d0,dirname
  34.     beq    closel
  35.  
  36.     
  37.     move.l    #200,d0        ;alloc mem for linkedline (19+filename)
  38.     moveq    #0,d1
  39.     jsr    allocmem(a6)
  40.     move.l    d0,linkedline
  41.     beq    freeram
  42.     
  43.     move.l    #260,d0        ;alloc mem for fileinfoblock
  44.     moveq    #0,d1
  45.     jsr    allocmem(a6)
  46.     move.l    d0,fileinfoblock
  47.     beq    freeram1
  48.  
  49.     move.l    dosbase,a6
  50.     move.l    #1005,d2    ;open messagewindow
  51.     move.l    #messagewindow,d1
  52.     jsr    open(a6)
  53.     move.l    d0,mwhandle
  54.     beq    freeram2
  55.     
  56.     move.l    mwhandle,d1    ;write welcome
  57.     move.l    #welcome,d2
  58.     move.l    #welle,d3
  59.     jsr    write(a6)
  60.         
  61.     move.l    caddress,a0
  62.     move.l    dirname,a1
  63. copyloop:
  64.     move.b    (a0),d0
  65.     cmp.b    #",",d0
  66.     beq    loopend
  67.     cmp.b    #10,d0
  68.     beq    enodir
  69.     move.b    (a0)+,(a1)+
  70.     bra    copyloop
  71. loopend:
  72.     move.b    #0,(a1)
  73.  
  74.     move.l    #linkfilename,a1
  75.     add.l    #1,a0
  76.     move.l    #29,d0
  77. copylinkfilename:
  78.     move.b    (a0),d1
  79.     cmp.b    #10,d1
  80.     beq    clfnend
  81.     move.b    (a0)+,(a1)+
  82.     dbra    d0,copylinkfilename
  83. clfnend:
  84.     cmp.l    #29,d0
  85.     beq    standardlfn
  86. back:
  87.     move.b    #0,(a1)
  88.  
  89.     move.l    #linkfilename,d1
  90.     move.l    #1004,d2
  91. ;    jsr    open(a6)
  92. ;    move.l    d0,lfhandle
  93.     beq    elinkfile
  94. lockdir:
  95.     move.l    dirname,d1
  96.     move.l    #1005,d2
  97.     jsr    lock(a6)
  98.     move.l    d0,dirlock
  99.     beq    elockdir
  100. examinedir:
  101.     move.l    dirlock,d1
  102.     move.l    fileinfoblock,d2
  103.     jsr    examine(a6)
  104.  
  105. examinenext:
  106.     move.l    dirlock,d1
  107.     move.l    fileinfoblock,d2
  108.     jsr    exnext(a6)
  109.     cmp.l    #0,d0
  110.     beq    writefile
  111.     move.l    fileinfoblock,a0
  112.     add.l    #8,a0
  113.     move.l    #29,d0
  114.     move.l    #filename,a1
  115. filenamecopy:
  116.     move.b    (a0)+,(a1)+
  117.     dbeq    d0,filenamecopy
  118. show:
  119.     move.l    mwhandle,d1
  120.     move.l    #filename,d2
  121.     move.l    #30,d3
  122.     jsr    write(a6)
  123.  
  124.     move.l    mwhandle,d1
  125.     move.l    #nextt,d2
  126.     move.l    #nexttl,d3
  127.     jsr    write(a6)
  128.  
  129.     move.l    #31,d0
  130.     move.l    #filename,a0
  131. clearfilename:
  132.     move.b    #0,(a0)+
  133.     dbra    d0,clearfilename
  134.  
  135.     bra    examinenext
  136.  
  137. writefile:    
  138.     move.l    mwhandle,d1
  139.     move.l    #linkfilename,d2
  140.     move.l    #30,d3
  141.     jsr    write(a6)
  142.  
  143. exit:
  144.     btst    #6,$bfe001
  145.     bne    exit
  146.     move.l    mwhandle,d1    ;put exit message
  147.     move.l    #goodby,d2
  148.     move.l    #goodbyl,d3
  149.     jsr    write(a6)
  150. unlockdir:
  151.     move.l    dirlock,d1
  152.     jsr    unlock(a6)
  153. closemw:
  154.     move.l    #50,d1
  155.     jsr    delay(a6)
  156.     move.l    mwhandle,d1    ;close messagewindow
  157.     jsr    close(a6)
  158. freeram2:
  159.     move.l    _execbase,a6
  160.     move.l    fileinfoblock,a1
  161.     move.l    #260,d0
  162.     jsr    freemem(a6)
  163. freeram1:
  164.     move.l    _execbase,a6
  165.     move.l    linkedline,a1
  166.     move.l    #200,d0
  167.     jsr    freemem(a6)
  168. freeram:
  169.     move.l    _execbase,a6
  170.     move.l    dirname,a1
  171.     move.l    #200,d0
  172.     jsr    freemem(a6)
  173. closel:
  174.     move.l    dosbase,a1
  175.     jsr    closelib(a6)
  176. end:
  177.     movem.l    (sp)+,a0-a6/d0-d7
  178.     rts
  179.  
  180. standardlfn:
  181.     move.l    #"inde",(a1)+
  182.     move.l    #"x.ht",(a1)+
  183.     move.w    #"ml",(a1)+
  184.     bra    back    
  185. elockdir:
  186.     move.l    mwhandle,d1
  187.     move.l    #etlockdir,d2
  188.     move.l    #etllockdir,d3
  189.     jsr    write(a6)
  190.     bra    closemw
  191. enodir:
  192.     move.l    mwhandle,d1
  193.     move.l    #etnodir,d2
  194.     move.l    #etlnodir,d3
  195.     jsr    write(a6)
  196.     bra    closemw
  197.  
  198. elinkfile:
  199.     move.l    mwhandle,d1
  200.     move.l    #etlinkfile,d2
  201.     move.l    #etllinkfile,d3
  202.     jsr    write(a6)
  203.     bra    closemw
  204.  
  205. dosname:
  206.     dc.b    "dos.library",0
  207.     cnop    0,4
  208. dosbase:
  209.     dc.l    0
  210. clength:
  211.     dc.l    0
  212. caddress:
  213.     dc.l    0
  214. dirlock:
  215.     dc.l    0
  216. fileinfoblock:
  217.     dc.l    0
  218. filehandle:
  219.     dc.l    0
  220. filerror:
  221.     dc.b    "Error on diskaccess !",13,10,0
  222. filerrorl    equ    *-filerror
  223.     cnop    0,4
  224. welcome:
  225.     dc.b    "Welcome to LinkDir... !",13,10,10,0
  226. welle    equ    *-welcome
  227.     cnop    0,4
  228. messagewindow:
  229.     dc.b    "RAW:30/50/370/390/"," ",126,"LinkDir",126,"   ..................    June 1996 ©  by Greg McCoy",0
  230.     cnop    0,4
  231. mwhandle:
  232.     dc.l    0
  233. goodby:
  234.     dc.b    "Thank you for pressing the self-destruct button... !",0
  235. goodbyl    equ    *-goodby
  236.     cnop    0,4
  237. etlockdir:
  238.     dc.b    "Error locking directory !",13,10,0
  239. etllockdir    equ    *-etlockdir
  240.     cnop    0,4
  241. etnodir:
  242.     dc.b    "Error: unspecified directory or comma missing !",13,10,0
  243. etlnodir    equ    *-etnodir
  244.     cnop    0,4
  245. etlinkfile:
  246.     dc.b    "Error creating linkfile !",13,10,0
  247. etllinkfile    equ    *-etlinkfile
  248.     cnop    0,4
  249. startblock:
  250.     dc.b    "<html>",13,10,"<head>",13,10,"<title>",13,10,"Linked with LinkDir © June 1996 by GregMcCoy",13,10,"</title>",13,10,"</head>",13,10,"<Body><hr>Simply click on linked files... Linked with LinkDir © Greg McCoy<hr><br><br><br>,13,10"
  251. sbl    equ    *-startblock
  252.     cnop    0,4
  253. endblock:
  254.     dc.b    "</body>",13,10,"</html>",0
  255. ebl    equ    *-endblock
  256.     cnop    0,4
  257. linkedline:
  258.     dc.l    0
  259. lllength:
  260.     dc.l    0
  261. lineblocka:
  262.     dc.b    "<A HREF="
  263. lbal    equ    *-lineblocka
  264.     cnop    0,4
  265. lineblockb:
  266.     dc.b    "</A><BR>",13,10
  267. lbbl    equ    *-lineblockb
  268.     cnop    0,4
  269. bracket:
  270.     dc.b    ">"
  271.     cnop    0,4
  272. filename:
  273.     ds.b    32
  274. dirname:
  275.     dc.l    0
  276. nextt:
  277.     dc.b    " ...",13,10,0
  278. nexttl    equ    *-nextt
  279.     cnop    0,4
  280. linkfilename:
  281.     ds.b    32
  282. lfhandle:
  283.     dc.l    0
  284.